/**
 *博客页 (非正式版)
 * 注：本页生成博客相关属性策略：
 *   博客ID：userId + 时间戳
 *   博客分类：classId 默认值
 *   博客创建时间：对应时间戳
 *
 *@author：ppfyang(hzyang_fan@corp.netease.com)
 */

// 标记博客条数
var BLOGL = 0;

// 标记默认博客分类
var CLASSID = 0;

// 标记默认用户ID
var USERID = 126770605;

// 标记默认用户名
var USERNAME = 'testblog1';

// 标记默认用户昵称
var USERNICKNAME = 'testblog';

// 页面管理器
var _$$bolgManager = {

    // 页面初始化
    _$init: function () {

        // 标记tab分页
        this.__tab = _$$p('.tab');

        // 博客排序
        this.__sortBlog = function (_blog1, _blog2) {

            if (_blog1.rank != _blog2.rank) {

                if (_blog1.rank == 5) {
                    return -1;
                } else {
                    return 1;
                }

            } else {

                if (_blog1.publishTime < _blog2.publishTime) {
                    return 1;
                } else {
                    return -1;
                }
            }
        }

        // 加载博客内容
        _$$p._$ajax({
            method: 'GET',
            url: 'http://fed.hz.netease.com/api/getblogs',
            dataType: 'JSON',
            success: function (_json) {

                BLOGL = _json.length;

                // 博客排序
                _json.sort(this.__sortBlog);

                // 标记注入
                var __blogHtml = '';

                // 博客编辑模板
                var __tbTpl = document.getElementById('cnt-editBlog').value.replace(/tpl./g, '') + '<ul class="u-cnt-list" id="blog-list">';

                // 博客模板
                var __blogTpl = document.getElementById('cnt-blog').value;

                // 底部操作模板
                var __delTpl = '</ul>' + document.getElementById('cnt-delete').value;

                // tab分页模板
                var __tabHtml = document.getElementById('cnt-tab').value;

                __blogHtml = __tbTpl;

                _json._$forEach(function (_blog, _index) {
                    _blog.index = _index;
                    _blog.personal = _blog.allowView == 10000 ? 'personal' : '';
                    __blogHtml += __blogTpl._$inject(_blog);
                })

                __blogHtml += __delTpl;

                _$$p('.m-main-cnt')._$setTpl({
                    'blog': __blogHtml,
                    'tab': __tabHtml
                })._$setHash({'blog': '/blog', 'tab': '/tab'}, function (_hash) {

                    this.__tab._$removeClass('js-selected');
                    _$$p(this.__tab._$dom[_hash])._$addClass('js-selected');

                    if (_hash == 0) {
                        this._$blogInteractive();
                    }

                }._$bind(this));

            }._$bind(this),

            error: function (_errorCode) {

            }
        })


    },

    // 页面交互
    _$blogInteractive: function () {

        // 标记博客编辑区
        var __blogTable = _$$p('#blog-tb');

        /* 日志编辑相关交互
         ---------------------------------------------------------------------- */

        _$$p('#blog-ttl')._$on('focus', function () {
            if (this.value == '日志标题') {
                this.value = '';
            }
        })

        _$$p('#blog-ttl')._$on('blur', function () {

            if (this.value == '') {
                this.value = '日志标题';
            }
        })

        _$$p('#blog-cnt')._$on('focus', function () {
            if (this.value == '这里可以写日志哦~') {
                this.value = '';
            }
        })

        _$$p('#blog-cnt')._$on('blur', function () {

            if (this.value == '') {
                this.value = '这里可以写日志哦~';
            }
        })

        /* 更多操作栏交互
         ---------------------------------------------------------------------- */

        _$$p(document)._$on('click', function (_event) {

            var __event = _event || window.event;

            var __elem = __event.target || __event.srcElement;

            if (_$$p._$pageHash() == '#/blog') {

                try {
                    _$$p('.more-tool')._$style('display', 'none');
                } catch (_e) {

                }
                // 更多按钮
                if (__elem.className == 'more') {

                    var __eq = _$$p(__elem)._$attr('data-eq');

                    _$$p('#more-tool' + __eq)._$style('display', 'block');

                // 标记按钮
                } else if (__elem.className == 'edit') {

                    var __eq = _$$p(__elem)._$attr('data-eq');

                    _$$p('#blog-ttl')._$dom[0].value = _$$p('#blog-detail' + __eq)._$dom[0].innerHTML;
                    _$$p('#blog-cnt')._$dom[0].value = _$$p('#blog-detail' + __eq)._$attr('data-cnt');

                    __blogTable._$attr('data-edit', __eq);

                // 删除按钮
                } else if (__elem.className == 'delete') {

                    var __eq = _$$p(__elem)._$attr('data-eq');

                    var __target = _$$p('#blog' + __eq)._$dom[0];

                    var __blogId = _$$p(__target)._$attr('data-id');

                    _$$p._$ajax({
                        method: 'GET',
                        url: 'http://fed.hz.netease.com/api/deleteBlogs?id=' + __blogId,
                        dataType: 'JSON',
                        success: function (_json) {
                            if (_json == 1) {

                                _$$p('#blog-list')._$dom[0].removeChild(__target);

                                _$$p('.m-main-cnt')._$updateTpl();

                            } else {

                                alert('删除失败!');
                            }
                        },
                        error: function (_errorCode) {

                        }
                    })

                // 置顶博客
                } else if (__elem.className == 'settop') {

                    // 标记操作内容
                    var __tip = __elem.innerHTML;

                    // 标记博客条目
                    var __eq = _$$p(__elem)._$attr('data-eq');

                    // 标记博客ID
                    var __blogId = _$$p(__elem)._$attr('data-id');

                    // 标记移动目标
                    var __target = _$$p('#blog' + __eq)._$dom[0];

                    if (__tip == '置顶') {

                        _$$p._$ajax({
                            method: 'GET',
                            url: 'http://fed.hz.netease.com/api/untopBlog?id=' + __blogId,
                            dataType: 'JSON',
                            success: function (_json) {
                                if (_json == 1) {

                                    __elem.innerHTML = '取消置顶';
                                    _$$p(__target)._$attr('data-rank', 5);
                                    _$$p('#blog-list')._$dom[0].removeChild(__target);

                                    try {

                                        _$$p('#blog-list')._$dom[0].insertBefore(__target, _$$p('.blog')._$dom[0]);
                                    }catch (_e){

                                        _$$p('#blog-list')._$dom[0].appendChild(__target);
                                    }

                                    _$$p('.m-main-cnt')._$updateTpl();

                                } else {

                                    alert('置顶失败!');
                                }
                            },
                            error: function (_errorCode) {

                            }
                        })

                    } else {

                        // 判断取消置顶的博客位置
                        var __backPos = function (_node) {

                            var __pos = null;

                            var __node = _$$p(_node);

                            try {
                                _$$p('.blog')._$dom._$forEach(function (_blog) {

                                    var __blog = _$$p(_blog);

                                    if (__blog._$attr('data-rank') == __node._$attr('data-rank') && __blog._$attr('data-date') < __node._$attr('data-date')) {

                                        __pos = _blog;

                                        return false;
                                    }
                                })
                            } catch (_e) {

                            }
                            return __pos;
                        }

                        _$$p._$ajax({
                            method: 'GET',
                            url: 'http://fed.hz.netease.com/api/untopBlog?id=' + __blogId,
                            dataType: 'JSON',
                            success: function (_json) {
                                if (_json == 1) {

                                    __elem.innerHTML = '置顶';
                                    _$$p(__target)._$attr('data-rank', 0);
                                    _$$p('#blog-list')._$dom[0].removeChild(__target);

                                    var __exitChild = __backPos(__target);

                                    if (!!__exitChild) {
                                        _$$p('#blog-list')._$dom[0].insertBefore(__target, __exitChild);
                                    } else {
                                        _$$p('#blog-list')._$dom[0].appendChild(__target);
                                    }

                                    _$$p('.m-main-cnt')._$updateTpl();

                                } else {

                                    alert('取消置顶失败!');
                                }
                            },
                            error: function (_errorCode) {

                            }
                        })
                    }
                }
            }
        })

        /* 发布博客
         ---------------------------------------------------------------------- */

        _$$p('#blog-clear')._$on('click', function () {
            __blogTable._$attr('data-edit', -1);
        })

        _$$p('#blog-sub')._$on('click', function () {

            // 判断新博客插入位置
            var __innerPos = function () {

                var __pos = null;

                try {
                    _$$p('.blog')._$dom._$forEach(function (_blog) {

                        if (_$$p(_blog)._$attr('data-rank') == 0) {

                            __pos = _blog;

                            return false;
                        }
                    })
                } catch (_e) {

                }
                return __pos;
            }

            // 博客标题
            var __ttl = _$$p('#blog-ttl')._$dom[0].value._$trim();

            // 博客内容
            var __cnt = _$$p('#blog-cnt')._$dom[0].value._$trim();

            if (__ttl == '日志标题' || !__ttl) {
                alert('请填写博客标题!');
                return false;
            }

            if (__cnt == '这里可以写日志哦~' || !__cnt) {
                alert('请填写博客内容!');
                return false;
            }

            // 获取创建时间
            var __subTime = new Date();

            // 判断当前时编辑博客（对应博客条目） 还是发布博客（-1）
            var __bid = __blogTable._$attr('data-edit');

            // 初始化提交数据
            var __blog = {
                personal: '',//标记是否为私信
                title: __ttl,//日志标题
                blogContent: __cnt,//日志内容
                publishTime: __subTime,// 标记博客先后顺序时间
                modifyTime: __subTime,//日志创建时间
                accessCount: 0,//阅读数
                allowView: -100,//阅读权限
                commentCount: 0,//日志评论数
                rank: 0,//标记是否置顶
                id: 'fks_' + USERID + __subTime.valueOf(),//日志ID客户端随机生成
                shortPublishDateStr: __subTime._$format('yyyy-MM-dd'),//提交年月日
                publishTimeStr: __subTime._$format('hh:mm:ss'),//提交时分秒
                classId: CLASSID,//日志分类
                userId: USERID,//用户ID
                userName: USERNAME,//用户名
                userNickname: USERNICKNAME//用户昵称
            };

            var __blogTpl = document.getElementById('cnt-blog').value;

            // 发布博客
            if (__bid < 0) {

                __blog.index = BLOGL++;

                _$$p._$ajax({
                    method: 'GET',
                    url: 'http://fed.hz.netease.com/api/addBlog?blog=' + __blog,
                    dataType: 'JSON',
                    success: function (_json) {

                        if (_json == 1) {

                            var __exitChild = __innerPos();

                            var __innerNode = _$$p._$parseHTML(__blogTpl._$inject(__blog));

                            if (!!__exitChild) {
                                _$$p('#blog-list')._$dom[0].insertBefore(__innerNode, __exitChild);
                            } else {
                                _$$p('#blog-list')._$dom[0].appendChild(__innerNode);
                            }

                            _$$p('.m-main-cnt')._$updateTpl();

                            alert('发布成功!');

                        } else {

                            alert('发布失败!');
                        }
                    },
                    error: function (_errorCode) {

                    }
                })

            // 编辑博客
            } else {

                var __editable = true;

                try {

                    __blog.index = __bid;
                    __blog.id = _$$p('#blog' + __bid)._$attr('data-id');
                } catch (_e) {

                    __editable = false;
                }

                if (__editable) {

                    _$$p._$ajax({
                        method: 'GET',
                        url: 'http://fed.hz.netease.com/api/editBlog?blog=' + __blog,
                        dataType: 'JSON',
                        success: function (_json) {

                            if (_json == 1) {

                                var __cnt = _$$p('#blog-list')._$dom[0];

                                __cnt.removeChild(_$$p('#blog' + __bid)._$dom[0]);

                                var __exitChild = __innerPos();

                                var __innerNode = _$$p._$parseHTML(__blogTpl._$inject(__blog));

                                if (!!__exitChild) {
                                    __cnt.insertBefore(__innerNode, __exitChild);
                                } else {
                                    __cnt.appendChild(__innerNode);
                                }

                                _$$p('.m-main-cnt')._$updateTpl();

                                alert('修改成功!');


                            } else {

                                alert('修改失败!');
                            }
                        },
                        error: function (_errorCode) {

                        }
                    })

                } else {

                    alert('该日志已被删除，请发布新的博客！');
                }
            }

            __blogTable._$attr('data-edit', -1);
            _$$p('#blog-ttl')._$dom[0].value = '日志标题';
            _$$p('#blog-cnt')._$dom[0].value = '这里可以写日志哦~';
        })

        /* 全选
         ---------------------------------------------------------------------- */

        _$$p('#select_all')._$on('click', function () {

            try {
                _$$p('.log-check')._$dom._$forEach(function (_box) {
                    if (this.checked) {
                        _box.checked = true;
                    } else {
                        _box.checked = false;
                    }
                }._$bind(this))
            } catch (_e) {

            }
        })

        /* 删除按钮
         ---------------------------------------------------------------------- */

        _$$p('#delete_select')._$on('click', function () {

            if (confirm("确定删除所选?")) {

                // 博客Id 管理
                var __idArr = [];

                // 博客条目 管理
                var __indexArr = [];

                try {

                    _$$p('.log-check')._$dom._$forEach(function (_box) {
                        if (_box.checked) {

                            __idArr.push(_$$p(_box)._$attr('data-id'));
                            __indexArr.push(_$$p(_box)._$attr('data-index'));
                        }
                    })
                } catch (_e) {

                }
                if (__idArr.length != 0) {

                    _$$p._$ajax({
                        method: 'GET',
                        url: 'http://fed.hz.netease.com/api/deleteBlogs?id=' + __idArr.join('&'),
                        dataType: 'JSON',
                        success: function (_json) {
                            if (_json == 1) {

                                var __cnt = _$$p('#blog-list')._$dom[0]
                                for (var i = 0, l = __indexArr.length; i < l; i++) {

                                    __cnt.removeChild(_$$p('#blog' + __indexArr[i])._$dom[0]);
                                }

                                _$$p('#select_all')._$dom[0].checked = false;

                                _$$p('.m-main-cnt')._$updateTpl();

                            } else {

                                alert('删除失败!');
                            }
                        },
                        error: function (_errorCode) {

                        }
                    })
                }
            }
        })

    }
}

// 渲染页面
_$$p._$domReady(function () {

    _$$bolgManager._$init();
})